package controle;

import java.sql.SQLException;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import modelo.CategoriaProduto;
import persistencia.CategoriaProdutoDAO;


@Named(value = "categoriaProdutoMB")
@RequestScoped

public class CategoriaProdutoMB {

    private CategoriaProduto categoriaProduto;
    private CategoriaProdutoDAO categoriaProdutoDAO;
    private List<CategoriaProduto> categoriasProduto;
    private int idInicial;
    private int idFinal;
    private String filtroNome;

    public CategoriaProdutoMB() throws SQLException {
        this.categoriaProduto = new CategoriaProduto();
        this.categoriaProdutoDAO = new CategoriaProdutoDAO();
        this.categoriasProduto = this.listar();
        this.listar();
        //this.listaCategoriaProdutos("select * from gastro_categoriaproduto");
    }

    public void setCategoriaProduto(CategoriaProduto categoriaProduto) {
        this.categoriaProduto = categoriaProduto;
    }

    public CategoriaProduto getCategoriaProduto() {
        return this.categoriaProduto;
    }
   
    public List<CategoriaProduto> getCategoriasProduto() {
        return this.categoriasProduto;
    }

    public void setCategoriaProdutos(List<CategoriaProduto> categoriasProduto) {
        this.categoriasProduto = categoriasProduto;
    }

    public void novo() {
        categoriaProduto = new CategoriaProduto();
    }

    public int getIdInicial() {
        return idInicial;
    }

    public void setIdInicial(int idInicial) {
        this.idInicial = idInicial;
    }

    public int getIdFinal() {
        return idFinal;
    }

    public void setIdFinal(int idFinal) {
        this.idFinal = idFinal;
    }

    public String getNome() {
        return filtroNome;
    }

    public void setNome(String filtroNome) {
        this.filtroNome = filtroNome;
    }

    public void salvar() throws SQLException {
        if (this.categoriaProduto.getId() == 0) {
           this.categoriaProdutoDAO.inserir(this.categoriaProduto);
        } else {
            
            this.categoriaProdutoDAO.alterar(this.categoriaProduto);
        }
    }


    public String editarCategoriaProduto(Object o) throws SQLException {

        this.setCategoriaProduto((CategoriaProduto ) o);
        
        return "cadastrarCategoriaProduto";
    }

    public void excluir(CategoriaProduto categoriaProduto) throws SQLException {
        this.categoriaProdutoDAO.excluir(categoriaProduto);
        this.listar();
    }

    public List<CategoriaProduto> listar() throws SQLException {
        return this.categoriaProdutoDAO.getCategoriasProduto("select * from gastro_categoriaproduto");
   }
   

    //ordenação  
    public void ordenaId() throws SQLException {
        this.categoriasProduto = this.categoriaProdutoDAO.getCategoriasProduto("select * from gastro_categoriaproduto order by id");
    }

    public void ordenaNome() throws SQLException {
        this.categoriasProduto = this.categoriaProdutoDAO.getCategoriasProduto("select * from gastro_categoriaproduto order by nome");
    }

 
    public void filtraNome() throws SQLException {
      this.categoriasProduto = this.categoriaProdutoDAO.getCategoriasProduto("select * from gastro_categoriaproduto where nome ilike '%" + this.filtroNome + "%'");
    }

    public void filtraID() throws SQLException {
      this.categoriasProduto = this.categoriaProdutoDAO.getCategoriasProduto("select * from gastro_categoriaproduto where id >= " + idInicial + " and id <= " + idFinal);
    }

}
  //end ordenação
